.TH std::basic_stringbuf::seekpos 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::basic_stringbuf::seekpos \- std::basic_stringbuf::seekpos

.SH Synopsis
   protected:

   virtual pos_type seekpos( pos_type sp,

                             std::ios_base::openmode which = std::ios_base::in |
   std::ios_base::out );

   Repositions std::basic_streambuf::gptr and/or std::basic_streambuf::pptr, if
   possible, to the position indicated by sp.

   Effectively executes seekoff(off_type(sp), std::ios_base::beg, which).

.SH Parameters

   sp    - stream position, such as one obtained by seekoff() or seekpos()
           defines whether the input sequences, the output sequence, or both are
           affected. It can be one or a combination of the following constants:
   which -
           Constant Explanation
           in       affect the input sequence
           out      affect the output sequence

.SH Return value

   sp on success or pos_type(off_type(-1)) on failure.

.SH Notes

   seekpos() is called by std::basic_streambuf::pubseekpos(), which is called by the
   single-argument versions of std::basic_istream::seekg() and
   std::basic_ostream::seekp().

.SH Example


// Run this code

 #include <sstream>
 #include <iostream>

 struct mybuf : std::stringbuf
 {
     mybuf(const std::string& str) : std::stringbuf(str) {}

     pos_type seekpos(pos_type sp, std::ios_base::openmode which)
     {
         std::cout << "Before seekpos(" << sp << "), size of the get area is "
                   << egptr() - eback() << " with "
                   << egptr() - gptr() << " read positions available.\\n";

         pos_type rc = std::stringbuf::seekpos(sp, which);

         std::cout << "seekpos() returns " << rc << ".\\nAfter the call, "
                   << "size of the get area is "
                   << egptr() - eback() << " with "
                   << egptr() - gptr() << " read positions available.\\n";

         return rc;
     }
 };

 int main()
 {
     mybuf buf("12345");
     std::iostream stream(&buf);
     stream.seekg(2);
 }

.SH Output:

 Before seekpos\fB(2)\fP, size of the get area is 5 with 5 read positions available.
 seekpos() returns 2.
 After the call, size of the get area is 5 with 3 read positions available.

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

     DR    Applied to          Behavior as published               Correct behavior
                      static constant members of std::ios_base
   LWG 375 C++98      were                                     corrected
                      misspecified as members of
                      std::basic_ios
   LWG 564 C++98      if was unclear how to reposition gptr    they are repositioned by
                      and/or pptr                              seekoff()

.SH See also

   pubseekpos invokes seekpos()
              \fI(public member function of std::basic_streambuf<CharT,Traits>)\fP
   seekoff    repositions the next pointer in the input sequence, output sequence, or
   \fB[virtual]\fP  both, using relative addressing
              \fI(virtual protected member function)\fP
   seekpos    repositions the file position, using absolute addressing
   \fB[virtual]\fP  \fI(virtual protected member function of std::basic_filebuf<CharT,Traits>)\fP

   seekpos    repositions the next pointer in the input sequence, output sequence, or
   \fB[virtual]\fP  both using absolute addressing
              \fI(virtual protected member function of std::strstreambuf)\fP
